package com.forenow.demo.demo23;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 集合（容器）
 * Collection接口用来存放一组称为元素的对象，一个Collection中可以放不同类型的数据，它是Set接口和List接口的父接口。其中元素是否有特定的顺序以及是否允许重复，取决于它的实现类。
 * (1) 子接口Set：无序的集合，不允许重复。
 * Set接口的实现类：HashSet　
 * (2) 子接口List：有序的集合，允许重复。
 *List接口的实现类：ArrayList（常用的)、LinkedList
 *
 * ArrayList中常用的方法
 * add(E e) 将指定的元素添加到此列表的尾部。
 * remove(int index) 移除此列表中指定位置上的元素。
 * get(int index) 返回此列表中指定位置上的元素。
 * size() 返回此列表中的元素数。
 *
 */
public class CollectionDemo {
    public static void main(String[] args) {
        Student stu=new Student();
        Student stu1=new Student();
        stu.setId(1);
        stu1.setId(2);
        //创建一个集合
        List list=new ArrayList();
        //向集合当中添加元素
        list.add(1);    //自动转换成封装类型Integer
        list.add("3.14");  //自动转换成封装类型Double
        list.add(true);
        //创建一个集合容器
        //可以使用泛型<E>来约束集合中元素的类型
        List<Student> list1=new ArrayList<>();
        //向集合中添加元素，注意：集合中只能存对象（object）
        list1.add(stu);
        list1.add(stu1);
        //从集合中获取元素(Student对象)
        Student s=list1.get(0);   //通过下标获取集合中的元素（对象）
        System.out.println(s.getId());
        Student s1=list1.get(1);
        System.out.println(s1.getId());
        System.out.println("---------------");
        //遍历集合
        for (int i = 0; i <list1.size(); i++) {
            Student st=list1.get(i);
            System.out.println(st.getId());
        }
        System.out.println("-------------------");
        for (Student ss:list1
             ) {
            System.out.println(ss.getId());
        }
        System.out.println("---------------------");
        //迭代器  Interator
        Iterator<Student> iterator=list1.iterator();
        while (iterator.hasNext()){
            Student student =iterator.next();
            System.out.println(student.getId());
        }
        }


}
